Microsoft® DirectX® 9.0 SDK Update (October 2004)

Final Release

 

Last updated October 04, 2004

Welcome

This is Microsoft's DirectX 9.0 Software Development Kit (SDK) Update for October 2004 Final release.  Because this is an update, we have changed the structure of this readme.  Much of the information will remain as it was for the release DirectX 9.0 SDK Update (Summer 2003).  However there have been some additions and modifications with the content specific to the SDK (October 2004) Update. 

Primary areas of concentration for the October Update were for PIX, Preview pipeline, and updates for the Direct3D Extension Library (D3DX), Graphics Samples, Sample Frame work, tools and documentation.  This includes the final version of the next DirectX Runtime release called "DirectX 9.0c" with updated Managed DirectX binaries from the SDK Update (October 2004).

After installing, those new to DirectX should start with the DirectX 9.0 documentation.  More seasoned developers may also want to view the "What's New" section.  Professional DirectX developers should refer to the "KNOWN ISSUES" section prior to raising concerns.

 


Contents:

What’s New

Installation

DirectX 9 SDK Notes

Samples

Tools

D3DX

Documentation
DirectX for Managed Code

Compiler Support

CD Layout

Special Thanks
Roland SoundCanvans Sound Set for General MIDI and GS


 

What's New

New Samples:

     C++

AntiAliasing -         Multisampling attempts to reduce aliasing by mimicking a higher resolution display; multiple sample points are used to determine each pixel's color. This sample shows how the various multisampling techniques supported by your video card affect the scene's rendering. Although multisampling effectively combats aliasing, under particular situations it can introduce visual artifacts of its own. As illustrated by the sample, centroid sampling seeks to eliminate one common type of multisampling artifact. Support for centroid sampling is supported under Pixel Shader 2.0 in the latest version of the DirectX runtime.

IME Whitepaper -   The whitepaper will explain the input method editor, or IME as it relates to game developers. It will explain what it is, how to use it, why rendering IME graphics is challenging with full screen 3D applications, and explain how to render IME graphics using the IME API.  It will briefly discuss how to use the code found in the latest DirectX Sample Framework to address this.

Instancing -          The sample demonstrates 4 different rendering techniques to achieve the same result. 

ShortcutDisable -   This document describes how to temporarily disable Windows keyboard shortcuts to prevent disruption of game play for full screen games.

ConfigSystem -      The sample showcases a configuration system using a database of hardware device models. The sample detects the hardware on the system, and then looks up the database to find custom behavior defined for those existing devices.

     Managed

PrtPerVertex -       This new sample demonstrates how to use PrtEngine, a pre-computed radiance transfer (PRT) simulator that uses low-order spherical harmonics (SH). The sample also demonstrates how to use these results to accomplish dynamic light transport using a dynamic lighting environment with vs_1_1 vertex shader.

FragmentLinker -    This new sample shows how to use the FragmentLinker interface. Shader source code can be split into a series of shader fragments, which are compiled separately and linked together to form a complete shader; this linking stage is very efficient, making it suitable to runtime use. In this way, a Direct3D application can custom-build and appropriate shader for the current graphics card.

SimpleAnimation -   The new SimpleAnimation sample illustrates mesh animation with skinning using D3DX. 

Tool Updates

     PIX

Call capture and playback -  PIX can now capture all the Direct3D API calls and resources for playback.  With this feature you can predictably capture and replay the exact Direct3D stream repeatedly.

Asynchronous events -        PIX counters can now run asynchronously from the current frame.  This allows for counters to report back information for a frame that occurred in the past.

Triggers and Actions –         PIX not only captures frame by frame counter information.  A set of triggers and actions can be created to start and stop recording of information at different frames and times.

     Maya Exporter

Maya 6 Support -               The Maya preview pipeline now works with Maya 6.  Both Maya 5 and 6 plugins contain the exact same functionality.

Updated installer -              The Maya preview pipeline now installs directly with the SDK install, you will no longer have to run a secondary install script.

Procedural texture support – Textures created in an fx file that use the CPU to generate a procedural texture are now supported in the viewer window.

 DirectX for Managed Code

     Bug Fixes

o        Fixed a significant memory leak in TextureLoader.FromFile

o        Fixed a number of unhandled exception errors

D3DX

     Bug Fixes

o         Debug Output Muting: D3DX Debug output can be turned on or off programmatically using the new D3DXDebugMute function.

o         PRT: PRT Blocker meshes no longer have a 65,535 vertex limit.

o         FX:

- Fixed incorrect behavior when a texture was referred to by multiple samplers in multiple techniques.

- Fixed issue in texture UV coordinate transformation.

Updated Documentation

Updated Documentation for all above areas (see the What’s New section of the Documentation for details)

 Other Notes:

  • All DirectShow Tools and samples have been moved to the Extras download.  There are instructions for integrating the samples and tools into the SDK install.

  • In anticipation of advances designed to give developers more advanced, powerful and easier to use tools, the company’s Windows Gaming and Graphics Technologies team notes the following changes to the DirectX group of APIs:

    • DirectPlay is intended to address identified security issues through December 31, 2004. Future efforts concentrate on enhancing the core Windows networking technologies so the fundamentals of gaming technologies make the most of Windows technologies.
      DirectInput, DirectSound and DirectMusic will maintain their current status until new technology in these areas is made available.

    • Use of DirectDraw is no longer recommended. With the release of DirectX 9.0 all 2D functionality is contained within Direct3D and it's associated helper functions in Direct3D extensions (D3DX).

                                                                                                                                                                     back to top


Installation

  • The SDK requires Microsoft Internet Explorer Version 6 or higher.

  • DirectX 9.0 SDK  only supports Windows 2000 and above.  The SDK Developer Runtime is available on Windows 98 and Windows ME systems. If you choose to install on Win9x platforms you will encounter an error during installation.

  • We recommend you remove previous versions of the DirectX SDK prior to installing DirectX 9.0 SDK Release (see UNINSTALL).  While it is possible, it is an unsupported installation.

  • In addition, you should uninstall any DirectX SDK installations that may be part of a Microsoft Platform SDK installation prior to installing the DirectX 9.0 SDK.

  • On Windows 2000 or Windows XP, or Windows Server 2003, You must be logged on as an administrator before installing the DirectX 9.0 SDK and runtime.

  • SDK Installation to a network share is not supported. Specifically some components (ex. documentation will not install, managed samples will not run).

  • Please be alerted to the fact that using the "subst" command can result in path names that are too long for the installer to operate correctly. Please do not use this command for determining target drives of the DirectX SDK installer prior to invoking the installer. This is also liable to cause the SDK uninstaller to fail.

  • The DirectX 9.0 runtime installer should not be run in Compatibility Mode.

  • Direct Animation is not registered properly on SDKDev debug runtime install.

  • The Reference Rasterizer is not installed on any versions of Windows Server 2003 product family.

  • Several Virus Protection software applications interferes with SDK installation and may require you to temporarily disable the Virus Protection software until SDK installation is completed.

Installation notes on 64-bit Platforms

  • When installing on a 64 platform, both the 32 and the 64 bit version of debug files will be installed. The location of the 32 bit version of the DirectX control panel which controls debug settings can be found at %windir%\syswow64\directx.cpl. The 64 bit version of the DirectX control panel will show up in the Windows Control Panel after installing the SDK.

  • The is no support for the IA64 bit platforms.

  • There is no 32-bit developer runtime support on 64-bit platform for this release. 

  • Currently the Documentation for Visual Studio .NET 2003 and the Developer Runtime for X64 are not uninstalled automatically when you uninstall the Microsoft DirectX 9.0 SDK. They can be removed manually by going to the Add/Remove Programs Control Panel selecting the item in the list and choosing remove.  

Uninstall:

To uninstall, use "Add/Remove Programs" from the Control Panel to uninstall the InstallShield installations.

back to top

 


DirectX 9.0 SDK Notes

Samples

Issues:

  • The current samples do not work with the debugging utility D3DSpy. Any application that loads D3D9.dll directly from the \windows\system32 folder will also not work.
  • If you are setting up a D3D device on hardware which supports hardware pixel processing but does not support hardware vertex processing then you need to set the behavior flags accordingly.  In order to make samples that properly fallback to software vertex processing, you should remove following in the sample's IsDeviceAcceptable callback:

// Must support vertex shader 1.1
    if( pCaps->VertexShaderVersion < D3DVS_VERSION( 1, 1 ) )
        return false;

 and ensure that the following is in the sample's ModifyDeviceSettings callback:

 void CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, const D3DCAPS9* pCaps )

{

    // If device doesn't support HW T&L or doesn't support 1.1 vertex shaders in HW

    // then switch to SWVP.

    if( (pCaps->DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0 ||

         pCaps->VertexShaderVersion < D3DVS_VERSION(1,1) )

    {

        pDeviceSettings->BehaviorFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;

    }

    else

    {

        pDeviceSettings->BehaviorFlags = D3DCREATE_HARDWARE_VERTEXPROCESSING;

    }

 

 

Samples on 64-bit Platforms

  • DirectShow documentation for IMediaEvent::GetEvent shows lParam1 and lParam2 as pointers to longs. However, the actual implementation in control.h defines them as pointers to LONG_PTR. Note that LONG_PTR is capable of properly representing a long or a pointer on 32-bit or 64-bit platforms. Use of pointer to long in 64-bit sample or application code and typecasting by (LONG_PTR *) in the call will cause the compiler to write 64 bits on the stack location referenced by the pointer. As a standard long is not guaranteed to be 64 bits, corruption of the stack will result. Many of the DirectShow samples had this non-portability. All affected samples have been corrected to use LONG_PTR for declaration of lParam1 and lParam2

  • Many of the DirectShow samples include atlbase.h, which in turn includes shlwapi.h. In order for these samples to build, the Internet Development SDK (version 6.0 or newer) SDK component of the Platform SDK must be installed. This can be done by selecting that component after successful Core SDK installation, or reinvoking SetupA64.Exe and selecting the component for installation. Note that invoking "Platform SDK Update Site" from the start menu with the beta 1 SDK will attempt to download an older version of the Internet Development SDK which is not suitable for X64 builds.

  • The DirectShow Filters\PushSource sample will fail to register when built for debug X64. This is a known issue and should be ignored.

  • The X64 DirectShow DVDSample and PlayDVD samples require a 64-bit native DVD decoder to function properly. No such decoders were available at the time of this SDK beta release. It is likely that 3rd parties will provide decoders, so the sample build environments and pre-built binaries have been left intact in the SDK.  

Tools

Issues:

  • The preview pipeline will only work on WindowsXP

  • Accessing the DirectX Control Panel for 32-Bit application on x64 platforms: The 32-Bit version of the DirectX.cpl can be located by opening the Control Panel and double clicking on x86 Control Panel. A link to the 32-bit version of the DirectX.cpl exists there. Changes made in the 32-Bit version only effect settings for the 32-Bit applications. Changes made in the 64-Bit version only effect settings for the 64-Bit applications.

  • DirectX.cpl is listed as old by DXDiag in Windows XP Service Pack 2.  This is a known issue and can be safely ignored.

  • Maya may be unstable if you unload the DirectX plugin after the plug-in has been started and viewed objects. If you do not want the plug-in loaded into Maya, you should choose the option to no auto-load the plug-in into Maya and restart Maya.

  • SampleBrowser Documentation Links for the Maya and 3DS Max Exporters

    Although the documentation for the exporters do exist, the documentation links in the Sample Browser are incorrect. The documentation can be found at:

    DirectX Graphics -> Tools

  • When the photoshop plug-in is use with Paintshop Pro, the loading of images with alpha channel causes paintshop pro to multiply the alpha channel by the RGB channels and discards the alpha channel .  This causes images with the format XRGB to be loaded empty.

  • The photoshop plug-in does not currently support saving of TGA or PPM files.

  • When exporting an x file from the 'DirectX>Export Scene' menu option, make sure that you include the .x extension when saving as it is not being added by default. 

  • Control Panel option to switch between version so DirectX for Managed Applications is unavailable.
    Manually Switching between the Retail and Debug versions of DirectX for Managed Applications
    ====================================================================
    The option in the DirectX Control Panel to switch between the Retail and Debug versions of DirectX for Managed Applications is currently disabled due to some problems in the control panel. The following steps are provided to allow the user to switch between the two versions manually.

    1) Locate the installation directory for the Microsoft DirectX 9.0 SDK Update (October 2004). The default directory is C:\Program Files\Microsoft DirectX 9.0 SDK (October 2004).
    2) In this directory for the version of the DirectX for Managed Applications you wish to install in either the Developer Runtime\Managed DirectX\Retail or Debug subdirectory.
    3) Launch the mdxredist.msi file located in that directory by double clicking on it or simply running it from a command line. If a previous version of DirectX for Managed Applications is installed, you will be presented with an option to uninstall it. Click Next and allow the uninstallation of the previous version to finish. Once this is completed, launch the mdxredist.msi file again, and you will be presented with the End User License Agreement.
    4) Continue with setup by following the instructions in the dialogs to finish installing this version of the package.
     

    PIX ISSUES

    • PIX uses an application's PDB file in order to monitor its D3DX usage. You may have problems gathering D3DX usage information with PIX if your application's PDB file was generated by prerelease versions of Visual Studio 2005

    • PIX: Direct3D call stream capture may not work correctly if your app contains pixel shaders that are using a shader model less than 2.0

    • PIX experiment files can be corrupted if an action is changed to the "Set Per-Frame Counters" type from another action type. To avoid this problem, create a new action rather than modifying an existing one.

    • Inorder to use PIX with your application, it is expected that your application can handle a call to OpenProcess(PROCESS_QUERY_INFORMATION). If your game returns NULL, your application will not be usable with the PIX tool.

    • While we don't ship any default counter sets, the following will help you identify performance bottlenecks . The following counter sets cover areas including general batch submission, Input / Output costs and Resource management and are intended to be used as series of test passes.

      Initial Run
      Number of Draw* calls
      Number of DIP calls
      New resource bytes allocated this frame
      Locks on resource objects this frame
      SetVertexShaderConstant<T> calls this frame
      SetPixelShaderConstant<T> calls this frame
      SetRenderState calls this frame
      SetTexture calls this frame
      SetVertexShader calls this frame
      SetPixelShader calls this frame

      Draw Submission (Batches)
      Number of DrawPrim calls
      Number of DIP calls
      Number of DPUP calls
      Number of DIPUP calls
      Locks on VB objects this frame
      Locks on IB objects this frame
      Locks on texture objects this frame
      SetRenderState calls this frame
      SetPixelShader calls this frame
      SetTexture calls this frame
      SetVertexShader calls this frame
      SetRenderTarget calls this frame

      IO Pass
      Process % Processor Time[Target Process]
      Process IO Read Bytes/sec
      Process IO Write Bytes/sec
      Memory: Page Faults/sec
      Processor: % Procesor Time[Total]
      Number of DIP calls

      Resource Usage
      Number of DIP calls
      Locks on VB objects this frame
      Locks on default pool VB objects this frame
      Locks on managed pool VB objects this frame
      New VB objects allocated this frame
      New IB objects allocated this frame
      Locks on IB objects this frame
      Locks on default pool IB objects this frame
      Locks on managed pool IB objects this frame
      New texture objects allocated this frame
      Locks on texture objects this frame
      Locks on default pool texure objects this frame
      Locks on managed pool texture objects this frame
      Memory: Page Faults/sec
       

back to top

 


D3DX

 

Issues:

  • D3D_DEBUG_INFO extensions define a CreationCallStack field on Direct3D resources. To enable creation call stacks, create the following registry value: \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Direct3D\D3D9Debugging\EnableCreationStack = 1 Enabling this feature can cause a large performance hit in many applications, and should only be used when the functionality is specifically needed for debugging.
    In order to use Visual C 6.0 with D3DX you need to link with the D3DX that is located in the extras directory at the location: Extras\D3dx Visual Studio 6\d3dx9.lib. In the future, support for Visual Studio 6 may not be continued.

  • The D3DX library included in this release is dependant on the Direct3D runtimes that shipped with this SDK. If you link against this D3DX you should make sure you redistribute the runtime from this SDK

  • When compiling HLSL code to the 3.0 target, significant code reordering is done to move gradient computations outside of flow control.

  • D3DXSaveMeshHierarchyToFiles() does not currently save compressed animation sets.

  • ID3DXSkinInfo::ConvertToBlendedMesh/ConvertToIndexedBlendedMesh() does not currently run on hardware that does not support fixed-function vertex blending.

  • When an effect is between Begin() and End() (ie: a technique is active), changes to shared parameters used inside that technique will not take effect until the next Begin() - even if you call CommitChanges().

  • When opening files originally in X8R8G8B8 format and saving them in DXT1, DXT2 or DXT4 formats, the resulting texture will be blank. This is due to the fact that these formats use pre-multiplied alpha. Saving in DXT3 and DXT5 formats works as expected, since those formats do not use pre-multiplied alpha. This will be fixed in a future release.

  • Mesh that are to be used as Blocker meshes must be under 65535 vertices to work with PRT. This will be fixed in a future release.

    When an effect is between Begin() and End() (ie: a technique is active), changes to shared parameters used inside that technique will not take effect until the next Begin() - even if you call CommitChanges().

    For texture files containing simple textures (not cubes or volumes) with multiple mip levels, if the image is opened as an ENTIRE file and then saved back into the original or into a new file (via “Save As”), the file is not saved correctly, and the mip levels below the main image are all blank. This is due to an incorrect memory offset when copying file data. This will be fixed in a future release.
     

back to top


Documentation

Issues:

  • The known issues with the DirectX 9.0 Documentation are described in a separate file.  You will find these issues listed in the DirectX9_Doc_Readme.txt file found in the <DXSDK Installed Folder>\Documentation\DirectX9 folder. 

  • There are two mistakes on the “Flow Control” page, in the “Interaction of Per-Pixel Flow Control With Screen Gradients” section

    Scenario A is described as: “Operations that are permitted inside flow control that could vary across the pixels in a primitive. These include the operations listed in the following table.”

    Scenario A should be described as: “Operations that are not permitted inside flow control that could vary across the pixels in a primitive. These include the operations listed in the following table.”

    The title of column B in the table in scenario A is “Is Permitted in Flow Control when:

    The title of column B in the table in scenario A should be is “Is Not Permitted in Dynamic Flow Control when:

     

  • The documentation from previous DirectX releases is also available on http://msdn.microsoft.com/directx

  • Installing DirectX documentation from both the DirectX SDK and MSDN® Library can result in duplicate topics in Visual Studio. If this occurs, you should take the following steps to uninstall the DirectX documentation from the SDK.

  • In Control Panel, click the Add/Remove Programs icon.

  • Highlight Microsoft DirectX 9.0 Documentation and then click Remove.

  • The installation of some applications, such as Autodesk Inventor, may break a registry key rendering the DirectX SDK documentation unreadable. To solve this problem, complete the following steps:

    1. Search for the file CookDoc.dll on your local file system. By default, it is located in the following folder:

    [root]\Program Files\Common Files\Microsoft Shared\MSDN

    2. Open a command line interface (by running cmd.exe) and issue the following command:

    RegSvr32 "%PATH%\CookDoc.dll"

    where %PATH% is the actual directory location of CookDoc.dll on your local file system. For example:

    RegSvr32 "C:\Program Files\Common Files\Microsoft Shared\MSDN\CookDoc.dll"

    Use the quotation marks to quote the full path towards the DLL.

    If re-registering the DLL was successful, you will see the the following message:

    DllRegisterServer in c:\program files\Common Files\Microsoft Shared\MSDN\CookDoc.dll succeeded
     

Requirements:

  • The DirectX managed code application programming interface (API) documentation is automatically installed with DirectX 9.0 when Visual Studio .Net is installed. Open Visual Studio .NET and then, from the Help menu at the top, choose Contents. The documentation node in the Table of Contents is called DirectX 9.0 (Managed). The documentation can also be viewed on the Web at http://www.msdn.microsoft.com. See the help topic, "Tips and Tricks Using Managed Code," for the basics of how to install and use DirectX managed code and documentation.

back to top


DirectX for Managed Code

Requirements:

  • Developing managed applications with this DirectX SDK release requires Visual Studio.NET 2003 and .NET Runtime 1.1

  • Distributing the DirectX for Managed Code Update (October 2004).  There are several ways to redistribute DirectX for Managed Code:

    1. Install both DirectX9.0c and DirectX for Managed Code:  Install the DirectX 9.0c Runtime using the command DXSETUP.EXE /InstallManagedDirectX. This will extract MDXREDIST.MSI from the ManagedDX.CAB file and install the DirectX 9.0c runtime along with DirectX for Managed Code with minimal user interaction.

    2. Install just DirectX for managed Code:  Extract the MDXREDIST.MSI from the ManagedDX.cab file and use one of the following options:

    • Launch MDXREDIST.MSI directly, this will display a License Agreement and install the package with full user interaction, including a Setup completed dialog.

    • Launch MDXREDIST.MSI with a command line for Windows Installer. i.e. msiexec.exe /i mdxredist.msi. Additional parameters for msiexec.exe are documented in the Windows Installer SDK, available at the Microsoft MSDN website, in the Microsoft Platform SDK. These other parameters allow you to control the level of user interaction, and what else is displayed.

    • Use the MsiInstallProduct() API also documented in the Windows Installer SDK. The MsiInstallProduct function displays the user interface with the current settings and log mode. You can change user interface settings with the MsiSetInternalUI and MsiSetExternalUI functions. You can set the log mode with the MsiEnableLog function.

    If the .NET Framework v.1.1 and DirectX 9.0 are not previously installed, the MDXREDIST.MSI will display an appropriate message and DirectX for Managed Code will not be installed.

    To remove the installation, you may launch the installer again, or run the command msiexec.exe /x mdxredist.msi.

     

Issues:

  • he managed version of the PRTPerVertex sample is missing a config file required to properly execute. This is a known issue and will be fixed in a future update. To work around the problem, rebuild the sample and the missing file will be generated

  • If you are setting up a D3D device on hardware which supports hardware pixel processing but does not support hardware vertex processing then you need to set the behavior flags accordingly.  In order to make samples that properly fallback to software vertex processing, you should remove following in the sample's IsDeviceAcceptable callback

Remove the following from the sample’s IsDeviceAcceptable callback:

 

// Must support vertex shader 1.1

if (caps.VertexShaderVersion < new Version(1,1))

     return false;

 

 

Make sure that the following is part of the ModifyDeviceSettings callback:

 

// If device doesn't support HW T&L or doesn't support 1.1 vertex shaders in HW

// then switch to SWVP.

if ( (!caps.DeviceCaps.SupportsHardwareTransformAndLight) ||

     (caps.VertexShaderVersion < new Version(1,1)) )

{

    settings.BehaviorFlags = CreateFlags.SoftwareVertexProcessing;

}

else

{

    settings.BehaviorFlags = CreateFlags.HardwareVertexProcessing;

}

 

back to top


Direct3D

Refer to the “what’s new” section in the SDK documentation for new functionality in Direct3D

Issues:

  • The Direct3D SDK version number (D3D_SDK_VERSION in d3d9.h) has been changed. This will cause Direct3D applications compiled against this SDK's headers to fail at Direct3DCreate9 time unless DirectX 9c is installed. This change was made to give developers an early warning of these subtle runtime dependency issues, rather than having to debug an app that failed for less-than-obvious reasons much later.
    If you wish to enable your newly-compiled application to run against DirectX 9, 9a and 9b installations, pass D3D9b_SDK_VERSION to Direct3DCreate9 instead.

  • IDirect3DTexture9::GetLOD is used for LOD control of managed textures. If you call GetLOD on an unmanaged resource, a D3DERR error code will be returned.

  • D3D9 interfaces are restricted to DirectX 7 level and above DDI drivers.

  • A limitation of the Windows2000 Kernel can result in some resources being freed while the resource is locked and being accessed by the application. This results in the app writing to freed memory, causing an exception.  The problem only occurs with D3DPOOL_DEFAULT resources that the display driver chooses to place in system memory. When the device is put into a lost state (due to a mode change or ALT+TAB), all D3DPOOL_DEFAULT resources are freed. Direct3D has code to alias video memory resource pointers and redirect them to a dummy page, but D3DPOOL_DEFAULT system memory resources are not protected. The most common D3DPOOL_DEFAULT resources that get placed in system memory are Index Buffers, but some drivers may choose to place other resources in system memory as well. Apps can protect themselves by wrapping all resource accesses inside try…catch blocks.

  • When using the Direct3D software T&L pipeline (device created with D3DCREATE_SOFTWARE_VERTEXPROCESSING flag set or with D3DCREATE_MIXED_VERTEXPROCESSING flag and software vertex processing toggled on), then point sprite support is guaranteed. When using hardware vertex processing, some drivers may not support point sprites, but they must indicated this by setting d3dcaps->MaxPointSize to 1.0f.

  • On Windows98 and WindowsME, there are cases where a dialog box is not properly displayed on present after enabling GDI dialog boxes with SetDialogBoxMode. Applications can workaround this problem by calling Reset after each SetDialogBoxMode call.

Issues (Vertex/Pixel Shader):

  • Two vertex shader instructions may produce implementation-specific results for out-of-range inputs, such as the log of a negative number. The log, logp and y- component of the lit instruction macro should not be passed negative values for this reason.

  • The D3DMISCCAPS_CLIPPLANESCALEDPOINTS caps bit is improperly set in the DirectX 8 software vertex processing pipeline device.  The bit is cleared in the corresponding DirectX 9 device; however, we have decided not to change the legacy behavior for the DirectX 8 device since this change would introduce inconsistent behavior between DirectX 8.0, 8.1 and DirectX 9.0 versions of the DirectX 8 device.

  • Change in behavior for shader def instructions between DirectX 8 and DirectX 9 - The behavior of the constant "def" instruction in vertex and pixel shaders has been changed between DirectX 8 and DirectX 9.  The new defi and defb instructions fall in the same category. In DirectX 9, the lifetime of def'd constants in a given shader is confined to the execution of that shader only (and is non-overridable). The DirectX 9 behavior is as follows.  If a shader is set with c4 def'd, then a call to Set*ShaderConstantF() on c4 is made then shader get the def'd value.  If  another shader that uses c4 (but does not def it) is run, the shader will get what was set via Set*ShaderConstantF().  Likewise, calling Get*ShaderConstantF() will only ever retrieve constant values set via Set*ShaderConstantF().  DX8 behavior was that defs in a shader had their effect at the moment Set*Shader() was called, as if Set*ShaderConstant() was called for each def'd value, followed by setting the shader itself.  Calls to Set*ShaderConstant() after setting a shader with def'd values would therefore override the def'd values.  This could be desirable, but had the unwanted property that the order that multiple shaders are set could affect their behavior if a shader ever used a constant value that was def'd by another shader. As would be expected, the DirectX 9 runtime manages constants to ensure that even when running on a DirectX 8 driver, the DirectX 9 behavior described above is what will always be observed.

  • When creating a VS 3.0 shader on devices which do not support PS 3.0, you must take care in expressing the output declarations, because the runtime will pass on the contents and ordering of these declarations to the rasterizer, which expects the results to map to an FVF.  In particular:

a) Vertex semantics must be expressible in an FVF

b) The order of declarations should conform to order restrictions for vertex semantics within an FVF

Failure to follow these rules will result in asserts and debug error messages such as:

Direct3D9: Decl Validator: X1059: (Global Error) On a device that does not support ps_3_0, a transformed vertex declaration must specify elements in FVF order.

back to top


DirectSound®

This release of DirectSound has identical features to that of DirectX 9.0 and there is no plan to add additional features for the DirectX 9.0 SDK Update. See MSDN for previous release notes.

back to top


DirectMusic®

This release of DirectMusic has identical features to that of DirectX 9.0 and there is no plan to add additional features.  The samples, documentation, and release notes are available on MSDN.

back to top


DirectInput

 This release of DirectInput has identical features to that of DirectX 8.1 and there is no plan to add additional features to DirectInput in DirectX 9.0

back to top


DirectPlay

This release of DirectPlay has identical features to that of DirectX 9.0 and there is no plan to add additional features.  The samples, documentation, and release notes are available on MSDN.

No DirectPlay Debug DLLs ships with this SDK release, so when you run DirectSetup only the DirectPlay Retail installation option is available.

back to top


DirectShow

This release of DirectShow has identical features to that of DirectX 9.0 and there is no plan to add additional features for the DirectX 9.0 SDK Update.  See MSDN for previous release notes.

The X64 DirectShow DVDSample and PlayDVD samples require a 64-bit native DVD decoder to function properly. No such decoders were available at the time of this SDK beta release. It is likely that 3rd parties will provide decoders, so the sample build environments and pre-built binaries have been left intact in the SDK.

back to top


Broadcast Driver Architecture

This release of Broadcast Driver Architecture has identical features to that of DirectX 9.0 and there is no plan to add additional features for the DirectX 9.0 SDK Update.  See MSDN for previous release notes.

back to top


Compiler Support

  • Developing C++ applications with this release requires Visual Studio .NET 2002 or later. Visual Studio version 6 is no longer supported. Developing managed applications requires Visual Studio .NET 2003 and .NET Runtime 1.1. Developing 64-bit applications requires the Microsoft Platform SDK. All DirectX SDK supported 64-bit samples have a corresponding sample_makefile.x64. These makefiles are compatible with AMD64 and Intel64.

back to top


CD Layout:

The following is a brief description of the directories found following installation of the DirectX 9.0 SDK Update.  Depending on options specified during installation, some of these directories may not be installed on your hard drive.  The description below assumes a complete SDK install.

\Developer Runtime 

The Developer Runtime folder contains OS-specific debug versions of the DirectX runtime that have been customized to help DirectX developers debug issues related to their applications. It also contains Retail and Debug versions of the DirectX® 9.0 for Managed Code runtime.

 

The debug files are installed during the SDK portion of the setup program and can be loaded on demand, based on settings in the DirectX control panel.  The files in this directory should be adequate for debugging most DirectX applications.

 

Upon installation of these versions of the DirectX runtime, DXDiag.exe will report that the debug versions of the files have been installed and will give the following notice:

"Several files (d3dx8d.dll, d3dx9d.dll, d3d9d.dll) are Debug versions, which will run slower than the Retail version.

Note that this is only applicable when the Debug switch in the DirectX control panel is applied.   Setting all the switches to Retail in the DirectX control panel will configure DirectX to perform just as the normal version of the End-User Runtime.

 

Switching from Retail to Debug Versions of DirectX for Managed Code

Switching between retail and debug is not available via the DirectX.cpl at this time.  Please refer to the "Tools - Issue" section for a work around.

Switching from Debug to Retail Versions of DirectX

To switch back to retail version of the DirectX runtime, the developer's would need to reinstall the DirectX redist.  After re-installing the redist, there will be several developer files (d3dref.dll, d3dref8.dll, d3dref9.dll, and directx.cpl) that will remain on the system.  These files are removed when the SDK is uninstalled.

 

List of DirectX Switchable Debug DLL's:

d3d8d.dll

d3d9d.dll

d3dx8d.dll

d3dx9d.dll

dinput8d.dll

dmbandd.dll

dmcompod.dll

dmimed.dll

dmloaded.dll

dmscripd.dll

dmstyled.dll

dmsynthd.dll

dmusicd.dll

dswaved.dll

Additional Files Installed with the Developer Runtime:

d3dref.dll

d3dref8.dll

d3dref9.dll

directx.cpl

\Documentation

\DirectX9

Contains reference documentation for the DirectX 9.0 APIs.  The CHM Documentation must be viewed with Windows HTMLHelp.  Note:  The HTMLHelp viewer requires a minimum installation of Internet Explorer 5.0 (IE5).  IE5 can be found at http://www.microsoft.com/windows/ie/default.htm.  Documentation for DirectX for Managed Code is installed automatically when Visual Studio .NET 2002 is installed.

 

\License Agreements

Text versions of the DirectX SDK, End User License Agreements and the Redistributable License Agreement.

\Extras    (Available as separate downloads)

\Direct3D

Contains old DirectX modeling package Plug-Ins & Exporters.

 

Note: These old exporters only compile with Visual Studio 6.0.

 

\DirectShow

Contains the DirectShow Samples (C++ & VB), tools, DVDBoilerplate and additional media that can be used with DirectShow and the DirectShow Editing Services (DES) interfaces

 

\Documentation

Contains complete DirectX 9.0 Japanese documentation.  It also includes DirectX 7 HTMLHelp Documentation for English and Japanese, DirectX 7 Documentation in Microsoft Word format (English only) and DirectX 8 HTMLHelp Documentation for Japanese.

 

\Symbols

The retail symbols directory contains symbol files for the version of DirectX 9.0 contained in the Redist directory. The Debug symbols directory contains symbol files for the switch-able debug files that can be activated using the DirectX Control Panel.

To use the symbol files, add the appropriate directories to your symbol path, or copy the files to your symbols directory. Depending on the operating system you want to debug you may need to include different directories first. There is a general directory and possibly an addition directory with symbol files specific for each operating system.

You symbol path should include the specific directory if one exists first, then the general directory. For example to use the files for Windows XP you would have a symbol path that looked something like this:

SymPath=c:\symbols\retail\WinXP Only;c: \symbols\retail\Win2K-XP;

For Windows ME you might use a symbol path like this:

SymPath=c:\symbols\retail\Win9x

There is not additional directory required for Windows ME. All the supported symbol files exist in the \Symbols\Retail\Win9x directory.

   

\Include

Contains DirectX 9.0 include files for DirectX core components.

\Lib

Contains DirectX 9.0 library files for DirectX core components.

\Redist

Redistributable versions of the DirectX 9.0c Runtime with update Managed DirectX binaries from this SDK release.

\Samples

Contains all sample code and sample binaries.   Most samples can be accessed directly by the SDK Sample Browser located on the Start menu when installed via the downloaded InstallShield setup.

 

\Utilities

High level DirectX applications & tools.  Most can be accessed from the SDK sample browser.

\Content Creation Tool Plug-Ins

This directory contains the Maya and Photoshop content plug-ins.

 

\DirectX extensions for Visual Studio .NET

Microsoft® Visual Studio® supports debugging assembly level and high-level language vertex and pixel shaders.

                               

\x64

This directory contains the 64 bit version of the tools which supports the x64 bit platforms.

 

\MView

Contains the source code for the MView utility.

 

\Pix 

PIX (Performance Investigator for DirectX) is a tool designed to capture detailed performance information from a running application. This tool will help developers understand the work done by the application and by Microsoft® Direct3D® by analyzing frame data.

 

\Plug-ins

This directory contains Maya 5.0 and photoshop plug-ins.

back to top


ROLAND SoundCanvas Sound Set For General MIDI And GS Format

 

The Roland SoundCanvas Sound Set includes the necessary sounds to make a complete General MIDI compatible sound set.  It also includes additional sounds necessary to make a complete GS Format compatible sound set.

 

WHAT IS THE GS FORMAT?

 

The GS Format is a standardized set of specifications for sound sources that defines the manner in which multitimbral sound generating devices will respond to MIDI messages.  The GS Format also complies with General MIDI System Level 1.

 

The GS Format also defines a number of other details over and above the features of General MIDI.  These include unique specifications for sound and functions available for tone editing, effects, and other specifications concerning the manner in which sound sources will respond to MIDI messages.  Any device that is equipped with GS Format sound sources can faithfully reproduce both General MIDI sound recordings and GS Format MIDI sound recordings.

 

HOW TO CONTACT ROLAND:

Roland Corporation U.S.

7200 Dominion Circle

Los Angeles, CA  90040-3696

Phone:  (323) 890-3700

Fax:    (323) 890-3701

COPYRIGHT NOTICE AND LICENSE LIMITATIONS

 

Roland GS Sound Set/Microsoft (P) 1996 Roland Corporation U.S.

 

The Roland GS Sound Set/Microsoft, the "Sample Set", incorporates the Roland SoundCanvas Sound Set. Roland Corporation U.S. owns the Sample Set and all copyrights pertaining thereto and has licensed the Sample Set for use solely on Microsoft operating system products and Microsoft Application Products. 

 

Roland reserves all rights to the Sample Set not expressly granted by Roland Corporation U.S. or by Microsoft under the terms of Microsoft's End User License Agreement.

 

The Sample Set may only be redistributed with your software application as a part of a Microsoft operating system product installation and under the terms of Microsoft's End User License Agreement. The Sample Set may not be separated from the Microsoft operating system product; the Sample Set may only be installed by the Microsoft installation procedure for the associated Microsoft operating system product or for an associated software development kit.  All other uses of the Sample Set require a separate written license from Roland Corporation U.S.

 

The Sample Set may not be used, copied or redistributed in hardware ROM or similar technology of any device without prior express written permission from an authorized representative of Roland Corporation U.S. The Sample Set may not be redistributed with any Musical Instrument . A "Musical Instrument" is any device that is capable of generating musical sounds without being directly connected to a computer with a licensed Microsoft operating system product. You may not modify the Sample Set under any circumstances.

back to top